(module math racket
  (provide even?
           double
           square
           exp)

(define (even? n)
  (= (remainder n 2) 0))

(define (double n) (* n 2))

(define (square n) (* n n))

(define (exp b n)
  (cond ((= n 0) 1)
        ((even? n) (square (exp b (/ n 2))))
        (else (* b (exp b (- n 1))))))
  
)